package com.booksystem.campuslibrarymanagementsystem.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    //配置SwaggerBean实例
    @Bean
    public Docket docket1 (){
        return new Docket(DocumentationType.OAS_30)
                //DocumentationType.OAS_30 固定的，代表swagger3
                .groupName("管理端")
                //如果配置多个文档的时候，那么需要配置groupName来分组标识
                .apiInfo(apiInfo())   //用于生成API信息
                .enable(true)//启动时是否自动启动
                .select()   //select（）函数返回一个apiSelectorBuilder 实例，用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.booksystem.campuslibrarymanagementsystem.controller.admin"))//用于指定扫描哪个包下的接口
                .paths(PathSelectors.any())    //paths过滤xx路径，ant具体路径，
                .build();//创建
    }

    @Bean
    public Docket docket2 (){
        return new Docket(DocumentationType.OAS_30)
                //DocumentationType.OAS_30 固定的，代表swagger3
                .groupName("审批端")
                //如果配置多个文档的时候，那么需要配置groupName来分组标识
                .apiInfo(apiInfo())   //用于生成API信息
                .enable(true)//启动时是否自动启动
                .select()   //select（）函数返回一个apiSelectorBuilder 实例，用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.booksystem.campuslibrarymanagementsystem.controller.approve"))//用于指定扫描哪个包下的接口
                .paths(PathSelectors.any())    //paths过滤xx路径，ant具体路径，
                .build();//创建
    }

    @Bean
    public Docket docket3 (){
        return new Docket(DocumentationType.OAS_30)
                //DocumentationType.OAS_30 固定的，代表swagger3
                .groupName("用户端")
                //如果配置多个文档的时候，那么需要配置groupName来分组标识
                .apiInfo(apiInfo())   //用于生成API信息
                .enable(true)//启动时是否自动启动
                .select()   //select（）函数返回一个apiSelectorBuilder 实例，用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.booksystem.campuslibrarymanagementsystem.controller.user"))//用于指定扫描哪个包下的接口
                .paths(PathSelectors.any())    //paths过滤xx路径，ant具体路径，
                .build();//创建
    }
    @Bean
    public Docket docket4 (){
        return new Docket(DocumentationType.OAS_30)
                //DocumentationType.OAS_30 固定的，代表swagger3
                .groupName("登录相关")
                //如果配置多个文档的时候，那么需要配置groupName来分组标识
                .apiInfo(apiInfo())   //用于生成API信息
                .enable(true)//启动时是否自动启动
                .select()   //select（）函数返回一个apiSelectorBuilder 实例，用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.booksystem.campuslibrarymanagementsystem.controller.mainactivity"))//用于指定扫描哪个包下的接口
                .paths(PathSelectors.any())    //paths过滤xx路径，ant具体路径，
                .build();//创建
    }
    //配置swagger信息
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("毕业设计")//可以定义api的主标题
                .description("校园图书管理系统")//可以描述整体的api
                .termsOfServiceUrl("")//用于定义服务的域名
                .version("1.0")//可以用于定义版本
                .build();
    }


}

